約 1,825,026 件
https://w.atwiki.jp/javamock/pages/38.html
テキストエディタソースver1.1 テキストエディタソースver1.1TextEditor.java Constants.java TextEditor.java import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * テキストエディタのメインクラスです * * @author mock * @version 1.1 */ public class TextEditor extends JFrame implements ActionListener { /** * serialVersionUID */ private static final long serialVersionUID = 1L; /** * テキストエリア */ private static JTextArea textArea; /** * メニューバー */ private static JMenuBar menuBar = new JMenuBar(); /** * ファイル選択 */ private static JFileChooser fileChooser = new JFileChooser(); /** * コンストラクタ * * @throws HeadlessException */ TextEditor() throws HeadlessException { super(); setVisible(true); setTitle(Constants.UNDIFINED_TITLE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // メニューバーの作成 createMenuBar(); // テキストエリアの作成 createTextArea(Constants.TEXT_AREA_WIDTH, Constants.TEXT_AREA_HEIGHT); pack(); } /** * mainメソッドです * * @param args */ public static void main(String[] args) { new TextEditor(); } /** * メニューバーを作成するメソッドです */ private void createMenuBar() { getRootPane().setJMenuBar(menuBar); // ファイル(F) JMenu menuFile = new JMenu(Constants.MENU_FILE_LABEL); menuFile.setMnemonic(Constants.MENU_FILE_MNEMONIC); menuBar.add(menuFile); // ファイル(F)>新規(N) JMenuItem menuItemNew = new JMenuItem(Constants.MENU_ITEM_NEW_LABEL); menuItemNew.setMnemonic(Constants.MENU_ITEM_NEW_MNEMONIC); menuItemNew.setActionCommand(Constants.ACTION_COMMAND_NEW); menuItemNew.addActionListener(this); menuFile.add(menuItemNew); // ファイル(F)>開く(O) JMenuItem menuItemOpen = new JMenuItem(Constants.MENU_ITEM_OPEN_LABEL); menuItemOpen.setMnemonic(Constants.MENU_ITEM_OPEN_MNEMONIC); menuItemOpen.setActionCommand(Constants.ACTION_COMMAND_OPEN); menuItemOpen.addActionListener(this); menuFile.add(menuItemOpen); // ファイル(F)>上書き保存(S) JMenuItem menuItemSave = new JMenuItem(Constants.MENU_ITEM_SAVE_LABEL); menuItemSave.setMnemonic(Constants.MENU_ITEM_SAVE_MNEMONIC); menuItemSave.setActionCommand(Constants.ACTION_COMMAND_SAVE); menuItemSave.addActionListener(this); menuFile.add(menuItemSave); // ファイル(F)>名前を付けて保存(A) JMenuItem menuItemSaveAs = new JMenuItem( Constants.MENU_ITEM_SAVE_AS_LABEL); menuItemSaveAs.setMnemonic(Constants.MENU_ITEM_SAVE_AS_MNEMONIC); menuItemSaveAs.setActionCommand(Constants.ACTION_COMMAND_SAVE_AS); menuItemSaveAs.addActionListener(this); menuFile.add(menuItemSaveAs); // ヘルプ(H) JMenu menuHelp = new JMenu(Constants.MENU_HELP_LABEL); menuHelp.setMnemonic(Constants.MENU_HELP_MNEMONIC); menuBar.add(menuHelp); // ヘルプ(H)>バージョン情報(A) JMenuItem menuItemVersion = new JMenuItem( Constants.MENU_ITEM_VERSION_LABEL); menuItemVersion.setActionCommand(Constants.ACTION_COMMAND_VERSION); menuItemVersion.setMnemonic(Constants.MENU_ITEM_VERSION_MNEMONIC); menuItemVersion.addActionListener(this); menuHelp.add(menuItemVersion); } /** * テキストエリアを作成するメソッドです * * @param width * テキストエリアの幅 * @param height * テキストエリアの高さ */ private void createTextArea(int width, int height) { textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); scrollPane.setPreferredSize(new Dimension(width, height)); getContentPane().add(scrollPane); } /* * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if (actionCommand.equals(Constants.ACTION_COMMAND_NEW)) { newFile(); } else if (actionCommand.equals(Constants.ACTION_COMMAND_OPEN)) { openFile(); } else if (actionCommand.equals(Constants.ACTION_COMMAND_SAVE)) { save(); } else if (actionCommand.equals(Constants.ACTION_COMMAND_SAVE_AS)) { saveAs(); } else if (actionCommand.equals(Constants.ACTION_COMMAND_VERSION)) { showVersionInfo(); } } /** * 「ファイル(F)>新規(N)」選択時に処理を行うメソッドです */ private void newFile() { fileChooser.setSelectedFile(null); fileChooser.setName(Constants.UNDIFINED_TITLE); setTitle(Constants.UNDIFINED_TITLE); textArea.setText(""); } /** * 「ファイル(F)>開く(O)」選択時に処理を行うメソッドです */ private void openFile() { try { if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); FileReader fileReader = new FileReader(selectedFile); textArea.read(fileReader, null); fileReader.close(); setTitle(fileChooser.getName(selectedFile)); } } catch (IOException e) { e.printStackTrace(); } } /** * 「ファイル(F)>上書き保存(S)」選択時に処理を行うメソッドです */ private void save() { // ファイルが既に開かれている場合 if (fileChooser.getSelectedFile() != null) { writeFile(); return; } saveAs(); } /** * 「ファイル(F)>名前を付けて保存(A)」選択時に処理を行うメソッドです */ private void saveAs() { // ファイルダイアログ「保存」が選択された場合 if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { writeFile(); File selectedFile = fileChooser.getSelectedFile(); setTitle(fileChooser.getName(selectedFile)); } } /** * 「ヘルプ(H)>バージョン情報(A)」選択時に処理を行うメソッドです */ private void showVersionInfo() { JOptionPane.showMessageDialog(this, Constants.VERSION, "version", JOptionPane.INFORMATION_MESSAGE); } /** * fileChooserで選択されているファイルを保存するメソッドです */ private void writeFile() { try { FileWriter fileWriter = new FileWriter(fileChooser .getSelectedFile()); fileWriter.write(textArea.getText()); fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } Constants.java /** * 定数を定義するクラスです。 * * @author mock * */ public class Constants { /* * アプリケーションプロパティ */ /** * テキストエリアの幅 */ public static final int TEXT_AREA_WIDTH = 300; /** * テキストエリアの高さ */ public static final int TEXT_AREA_HEIGHT = 300; /** * 新規のタイトル名 */ public static final String UNDIFINED_TITLE = "title"; /** * バージョン */ public static final String VERSION = "ver1.1"; /* * メニューラベル・メニューアイテムラベル */ /** * ファイル(F)メニューのラベル */ public static final String MENU_FILE_LABEL = "ファイル(F)"; /** * ファイル(F)>新規(N)メニューアイテムのラベル */ public static final String MENU_ITEM_NEW_LABEL = "新規(N)"; /** * ファイル(F)>開く(O)メニューアイテムのラベルです。 */ public static final String MENU_ITEM_OPEN_LABEL = "開く(O)"; /** * ファイル(F)>上書き保存(S)メニューアイテムのラベル */ public static final String MENU_ITEM_SAVE_LABEL = "上書き保存(S)"; /** * ファイル(F)>名前を付けて保存(A)メニューアイテムのラベル */ public static final String MENU_ITEM_SAVE_AS_LABEL = "名前を付けて保存(A)"; /** * ヘルプ(H)メニューのラベルで */ public static final String MENU_HELP_LABEL = "ヘルプ(H)"; /** * ヘルプ(H)>バージョン情報(A)メニューアイテムのラベル */ public static final String MENU_ITEM_VERSION_LABEL = "バージョン情報(A)"; /* * メニューニーモニック・メニューアイテムニーモニック */ /** * ファイル(F)メニューのニーモニック */ public static final char MENU_FILE_MNEMONIC = F ; /** * ファイル(F)>新規(N)メニューアイテムのニーモニック */ public static final char MENU_ITEM_NEW_MNEMONIC = N ; /** * ファイル(F)>開く(O)メニューアイテムのニーモニックです。 */ public static final char MENU_ITEM_OPEN_MNEMONIC = O ; /** * ファイル(F)>上書き保存(S)メニューアイテムのニーモニック */ public static final char MENU_ITEM_SAVE_MNEMONIC = S ; /** * ファイル(F)>名前を付けて保存(A)メニューアイテムのニーモニック */ public static final char MENU_ITEM_SAVE_AS_MNEMONIC = A ; /** * ヘルプ(H)メニューのニーモニックで */ public static final char MENU_HELP_MNEMONIC = H ; /** * ヘルプ(H)>バージョン情報(A)メニューアイテムのニーモニック */ public static final char MENU_ITEM_VERSION_MNEMONIC = A ; /* * アクションコマンドキー */ /** * ファイル(F)>新規(N)メニューアイテムのアクションコマンドキー */ public static final String ACTION_COMMAND_NEW = "NEW"; /** * ファイル(F)>開く(O)メニューアイテムのアクションコマンドキー */ public static final String ACTION_COMMAND_OPEN = "OPEN"; /** * ファイル(F)>上書き保存(S)メニューアイテムのアクションコマンドキー */ public static final String ACTION_COMMAND_SAVE = "SAVE"; /** * ファイル(F)>名前を付けて保存(A)メニューアイテムのアクションコマンドキー */ public static final String ACTION_COMMAND_SAVE_AS = "SAVE_AS"; /** * ヘルプ(H)>バージョン情報(A)メニューアイテムのアクションコマンドキー */ public static final String ACTION_COMMAND_VERSION = "VERSION"; }
https://w.atwiki.jp/extranote/pages/34.html
ソースファイル C \JAVA_LESSON\src\HelloWorld.java を javacコマンド でコンパイルしてクラスファイル C \JAVA_LESSON\classes\HelloWorld.class を作りたい。 (WindowsXPの場合) すべてのプログラム→アクセサリ→コマンドプロンプト で コマンドプロンプト起動 カレントディレクトリを移動してから、javacする。 ---------- C \JAVA_LESSON javac -d classes ser/HelloWorld.java ---------- -d クラスファイルを保存したいディレクトリを指定 ソースをディレクトリつきで指定 するってぇと、 C \JAVA_LESSON\classes\HelloWorld.class ができる。 classフォルダもコンパイラが作ってくれるらしい。 実行するときは javaコマンド ---------- C \JAVA_LESSON java -cp classes HelloWorld ---------- -cp クラスファイルはここにあるからここから探せ という意味 クラスファイル名だけでOK ■パッケージの場合 ソースファイル Test.java を javacコマンド でコンパイルしてクラスファイル C \JAVA_LESSON\classes\HelloWorld.class を作りたい。 必ず、ソースファイルは、パッケージ宣言と同じ配置に置く 例 Test.java が javalesson.chap2 というパッケージだとしたら C \JAVA_LESSON\src\javalesson\chap2\Test.java ここに、こう置く。 --Test.java-- package javalesson.chap2; public class Test{ public static void main(String[] args){ //~中略~ 何かいろんな処理 } } ---------- コマンドプロンプトを起動 ---------- C \JAVA_LESSON javac -d classes ser/javalesson/chap2/Test.java ---------- -d クラスファイルを保存したいディレクトリを指定 ソースをディレクトリ(パッケージ名と同じ)つきで指定 C \JAVA_LESSON\classes\classes\javalesson\chap2\Test.class ができる。 やっぱりフォルダもコンパイラが作ってくれるらしい。 ■参考サイト http //www.ytp.ne.jp/tech/java/sineruka/classpathhowto.html http //homepage3.nifty.com/uzblend/faq/index.html#xb3 http //www.nextindex.net/java/packageUse.html http //www.atmarkit.co.jp/fjava/onepoint/java/jv_jvc.html
https://w.atwiki.jp/suffix/pages/124.html
Javaで印刷を行う方法はまとめてみると、 クラスjava.awt.print.PrinterJobを使うか、インターフェースjavax.print.Print.DocPrintJobを 実装する方法に分かれるようだ。 PrinterJobを使ったやり方を書くと、 1.PrinterJobオブジェクト生成(PrinterJob pj = PrinterJob.getPrinterJob();) 2.setPrintableにより印刷方法のPrinterJobに伝える(pj.setPrintable(new SomeClass());) SomeClassではPrintableインターフェースを拡張しprintメソッド実装を行っている。 3.ダイアログの表示(if(pj.printDialog()){}) 4.pj.print()による呼び出し。 Java印刷プレビュー 参考: java print serviceを使ったやり方: http //www.cresc.co.jp/tech/java/jps/JPS.htm java.awt.print.Printableを使ったやり方: http //blog.goo.ne.jp/xmldtp/e/32b5504e587704eae1af5fc4907c95c0 JEditorPaneクラスを利用してテキストの簡易印刷を行う方法: http //itpro.nikkeibp.co.jp/article/COLUMN/20070406/267611/
https://w.atwiki.jp/nozick/pages/6.html
Javaを用いた開発手法。 ソフト Eclipseショートカットキー アクティビティーサイクル 画面に関する設定 getSystemServiceに関して ActivityとContext メディアプレイヤ ログ ダイアログ バイブレータ ソフト Eclipse(SDK・ADT) JDK ver6(現在は7でも可と思われる) Android SDK Eclipseショートカットキー +... [Ctrl]+[Space] →候補を出す。 [Ctrl]+[Shift]+[O] →インポートの編成。足りないものを追加し、使用してないものを削除する。 [Alt]+[Shift]+[S] →ソースタブの一部を参照可。使いどころとしては、この後[F]でフォーマットを掛ける位か。 →フォーマットの設定はウィンドウタブから設定を開き、Javaの欄の中にあるコード・スタイル欄の中にあるフォーマッタ―を弄る。 アクティビティーサイクル Androidアプリのライフサイクル BGMなどを流したりすると処理を切らねばならないので重要となる基本的な知識。 +... onCreate() →アプリ起動時に通る処理。ビューのセットなどを行う。 onRestart() →後記するonStopから復帰した際に通る処理。 onStart() →onCreate()かonRestart()の後に通る処理。 onResume() →onStart()か後記するonPause()のからの復帰時に通る処理 onPause() →ツイッター機能などで他のActivityが起動した際に通る処理。 onStop() →ホームボタンを押すなどしてActivityが表示されない際に通る処理。 onDestroy() →使用しなくなった際に通る処理。 画面に関する設定 onCreateで指定するのが定石。 +... // バックライトを保持する(常時点灯)getWindow().addFlags( WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON );// ステイタスバーの表示をクリアgetWindow().clearFlags( WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN ); // フルスクリーン処理を追加getWindow().addFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN ); // タイトルバーを消す requestWindowFeature( Window.FEATURE_NO_TITLE ); getSystemServiceに関して 画面解像度取得やバイブレータの所得等で使いますが、 context.を使うことでonCreate以外でも取得可能です。 +... バイブレータの場合 // これでエラー吹く場合vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE);// Contextで解決vibrator = (Vibrator)contex.getSystemService(context.VIBRATOR_SERVICE); ActivityとContext よく、Contextを引数として指定してくるメソッドがあるが、 場合によっては、Contextと書いているにもかかわらずActivityが必要な場合があるので注意。 (Activityの情報を持ったContextが必要というべきか?) メディアプレイヤ BGMなどを流すのに用いる機能。SEなどには向かない。 SEならSoundPoolが良い。 +... 流れ →new/create/setlooping/seekTo/start/stop/release/null →prepareも使ったほうが良いと思われる。 →stopだと、再利用不能かと思われる。再利用にはpauseが良いと思われる。 ログ ログを出力することでデバッグがしやすくなる。 +... ログの種類は複数存在する →ERROR エラー →WARN 警告 →INFO 情報 →DEBUG デバック →VERBOSE すべて 使い方は →Log.e("タグ","メッセージ"); →eがERROR、wが警告…となっている。 ダイアログ ここではアラートダイアログとプログレスダイアログを紹介する。 「アラートダイアログは便利だが、プログラム側から処理を切るのは不可能かと思われる。(Activity再生成ならどうにか?)」 「なので、プログラム側から一定段階で処理を切りたい場合はプログレスダイアログが良い。」 アラートダイアログ +... メソッドチェーンが可能。 処理の中断は不可能かと思われる。 AlertDialog.Builder aleartDlg = null;// 生成aleartDlg = new AlertDialog.Builder(getContext());// ボタンでのみダイアログに影響を与えるaleartDlg.setCancelable(false)// タイトル設定.setTitle("タイトル")// メッセージ設定.setMessage("メッセージ")// ボタン設定(YesNo時は追加で.setNegativeButtonで対処).setPositiveButton("OK", new DialogInterface.OnClickListener(){ // ボタンがタッチされたら public void onClick(DialogInterface dialog, int whichButton){}})// 表示.show; プログレスダイアログ +... クルクルと回るものが表示されるダイアログを紹介。 ProgressDialog progressDlg = null;// 生成progressDlg = new ProgressDialog(getContext());// タイトル設定progressDlg.setTitle("タイトル");// メッセージ設定progressDlg.setMessage("メッセージ");// スタイル設定(クルクル回る)progressDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 表示progressDlg.show();// 表示終了progressDlg.dismiss(); バイブレータ バイブレータの搭載は至極簡単です。 .Java +... バイブレータを使う Vibrator vibrator;// バイブレータ取得vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE);// バイブレータ指定時間(ミリ秒)始動vibrator.vibrate( 100 );// バイブレータ停止vibrator.cancel(); Manifest +... バイブレータの権限を得る uses-permission android name="android.permission.VIBRATE" /uses-permission
https://w.atwiki.jp/java_pro/pages/2.html
メニュー トップページ プラグイン紹介 HelloWorld_source FizzBuzz SumNumbers1 SumNumbers2 Sansho1.java Sansho2.java Find1.java IndexOf.java Break.java Otoshidama3.java Copy2_01.java CountSan.java SumNumbers2.java SumNumbers1.java Nabeatsu EvenNumber.java CountNumber.java Copy1_3.java Copy1_2.java DrawGraph1_2.java CountTest01.java Test03_12_16.java Test01_12_16.java Nibai.java Calculator.java MethodTest.java Circle NamedCircle Triangleクラス NamedTriangleクラス Ougi 抽象クラス実習 インターフェースの設計と実装 ForCollect.java 名前登録システム CountTenA1.java インスタンスの復習 ThreadTest.java EnumTest argsTest01.java ここを編集
https://w.atwiki.jp/atachi-java/pages/2.html
Java 新機能 言語文法型 例外処理 アノテーション リフレクション JDK 数値 文字列 日付時刻 コレクション スレッド XML サーブレット Tomcat ライブラリ EHCache FreeMarker GoogleCollectionsLibrary GWT Hessian hibernate iCal4j JavaMail JavaDB JSONIC JerichoHTMLParser log4j OSCache Rhino ROME Struts2 SpringFrameworks Tiles Textile Twitter4j UrlRewriteFilter Quartz ここを編集
https://w.atwiki.jp/skmt200x/pages/122.html
Keytoolの使い方 概要 デフォルトのキーストアの格納先 キーストアに格納されている鍵一覧 証明書のインポート 秘密鍵を含むPKCS12のインポート Jarファイルの署名 TOPへ編集 概要 デフォルトのキーストアの格納先 JAVA_HOME/lib/security/cacerts デフォルトのパスワードはchangeitになっているため、変更しておこう。 キーストアに格納されている鍵一覧 keytool -list -keystore cacerts keytool -list -keystore キーストア -storetype PKCS7|PKCS12... 証明書のインポート keytool -import -file X509証明書のパス -keystore cacerts 指定するX509証明書が取り込めない場合は、BEGIN CERTIFICATEブロックの前に、 意図しないテキストフィールドなどが格納されている場合に、うまく取り込めない。 秘密鍵を含むPKCS12のインポート keytool -importkeystore PKCS12などのパス -srckeystoretype PKCS -keystore 出力先のキーストア 序数の別名で、取り込まれるので、必要に応じて別名を変更 keytool -changealias -keystore キーストア -destalias 変更後 Jarファイルの署名 jarsigner Jarファイル 別名 最終更新日 [2012-07-15]
https://w.atwiki.jp/kindaidensan/pages/23.html
編集するにあたって このwikiを編集するにはどうすればいいのか、注意することはなにか、どんなページを作っていいのか、とかを書いてるページです。@wikiの使い方についてリンクの@wikiガイドとかを読んで下さい。 編集者になるには 編集者は電算研内部の人に限られます。 右上の「このwikiに参加」を押してください。 出て来る項目を書いていって、「管理人へのメッセージ」にどの班かと名前を書いてください。 管理人(電算研の管理してるアドレス)に承認メールが届くので承認されるまで待っててくださいslackのGeneralで送ったことを言わないとかなり承認が遅れる可能性あるのでできれば言ってください。 承認されれば右上のログインから参加時に入力したIDとパスワードでログイン出来るようになります。 これで編集ができるようになりました。 新しいページを作るには 新しいページを作るときは、テンプレートを使いましょう。 Java班ならjava班テンプレートがあります。 テンプレートを開き、左上の「@メニュー」から「新規ページ作成(その他)」→「このページをコピーして新規ページを作成」を選びます。 作りたいページの名前を入力します。 編集画面がでるので編集して「プレビュー」で確認した後「ページ保存」で保存。ページ名は後から変えるとき面倒なのでよく考えてつけること これで新しいページができます。注意点として新しいページはどこからもリンクされていないので、右メニューの編集履歴から消えると見つけにくくなります(上のメニューの「表示」→「このwikiの前ページ一覧」で見つけられます。) 編集者が少ないときは完成するまでメニューに載せなくてもいいですが、編集者が多くなってきたなら途中でも編集中であることを表示してメニューに載せたほうがやりやすいです。 元あるページを編集するには 上のメニューの「編集」→「ページ編集」です。 編集の細かい仕様とかこういう表示はどうすればいいのとかは@wikiご利用ガイドを見るかslackで質問してください。 どんなページ作っていいの? 特に規定はありません。後輩に継承したいなって技術をどんどん書いていってください。書き方とかも特に制約はありません。ただ、下記に各班の取り決めごとを書いています。それには従ってください。各班での取り決めごととかあるなら下記に追加してください。 各班の注意点 各班のページを作るときの注意点とかです。 Java班 Java班の使ってるDJGLについてのページの場合、先頭にDJGL-と付けて「DJGL-○○」みたいな名前にしてください。 Java班のページを作る場合はjava班テンプレートをコピーして作成してください。 java班固有のページを作るときは、Java班のページだとわかるように名前をつけてください。
https://w.atwiki.jp/cappu/pages/29.html
Scala(http //www.scala-lang.org/ ) 読み物 多忙な Java 開発者のための Scala ガイド(http //www.ibm.com/developerworks/jp/java/library/j-scala01228.html ) インストール(http //www.scala-lang.org/downloads/ ) 開発環境 Scala Plugin for Eclipse(http //www.scala-lang.org/node/94 ) 前提条件 Java6 Eclipse 3.4 Eclipse "Classic" http //www.eclipse.org/downloads/ アップデートサイト http //www.scala-lang.org/scala-eclipse-plugin http //www.scala-lang.org/scala-eclipse-plugin-nightly Subclipse(http //subclipse.tigris.org/servlets/ProjectProcess ) http //subclipse.tigris.org/update_1.4.x Scala Plugin の詳細 http //lampsvn.epfl.ch/trac/scala/wiki/EclipsePlugin リポジトリ scala-lang.org のダウンロードより http //lampsvn.epfl.ch/svn-repos/scala/scala/trunk 基礎
https://w.atwiki.jp/rinn/pages/33.html
□OutOfMemoryについて Javaで通常、OutOfMemoryというと、Java OOM(OutOfMemory)の事を指す。 これに対し、ネイティブ OOM(OutOfmemry)があり、OSからのヒープメモリを確保使用とした際、 それが不足すると、発生します。 これらを判別する方法は、Javaの標準出力にログが現れないものが、ネイティブOOMとなります。 Unix系OSでは、syslogログにOutOfMemoryの旨エラーログが出力されることがあります。 Java OOMが発生する場合、New+Old領域が不足した場合と、Permanent領域が不足した場合があります。 Permanentはクラスのメタデータ等の為確保される領域で、デフォルト16MB 最大64MBとなっている。 New+Old領域は、オブジェクトや、ハッシュデータなどが確保される領域で、New領域が、直ぐに解放 されるもの、Old領域は長期間メモリに確保されるものとなり、Old領域に確保されるとFullGCが発生 しない限り、不要となっても解放されない。メモリを確保しようとした時に、GCによっても必要な ヒープメモリが確保できない時に、OOMが発生する。 参考URL) http //software.fujitsu.com/jp/manual/manualfiles/M060013/B1WN5041/06Z200/trbs19/trbs0194.htm#New 参考URL) http //www.beasys.co.jp/cs/support_news/product_troubleshooting/Investigating_Out_of_Memory_Memory_Leak_Pattern.html ※ここに詳しく説明があります。 New+Old領域が不足してOOMが発生する場合、単純に不足している場合と、メモリリークとメモリリーク に似た現象の場合が考えれられます。メモリリークの場合は、参照オブジェクトをfinalなどで、nullを アサインするなど、Jprobe等のプロファイラでも問題となりそうなコードを見つけることも出来ます。